package com.qf.talk.service;

import com.qf.talk.model.FriendRequestAdd;
import com.qf.talk.model.UserCache;
import com.qf.talk.vo.FriendVO;

import java.util.List;

/**
 * 好友模块方法定义
 */
public interface FriendService {
    /**
     * 请求添加好友
     * @param userId  用户自己的id
     * @param wantUserId  用户想要添加的对方id
     * @param message   添加的附带信息是声明
     * @return  添加好友的操作结果
     *          0 添加成功
     *          1 添加失败
     *          2 等待确认
     */
    int addFriend(Long userId,Long wantUserId,String message);

    /**
     * 同意/决绝一个好友申请
     * @param requestId 请求的id
     * @param state 操作的结果 设置1 或者2 代表同意/拒绝
     * @return  数据库的操作结果
     */
    int askRequest(Long requestId,Integer state,Long selfId);

    /**
     * 查询一个用户的所有好友
     * @param userId 用户id  返回所有的好友
     */
    List<FriendVO> findFriends(Long userId);

    /**
     * 查询用户的所有的被申请的请求
     * @param userId 用户的id
     * @return 用户的所有的被申请的请求
     */
    List<FriendRequestAdd> findRequestAdd(Long userId);

    /**
     * 查询本地缓存 用户中心服务的用户数据
     * @param userIds 用户的id的集合
     * @return 用户的本地缓存信息
     */
    List<UserCache> findUserCacheByIds(List<Long> userIds);
    /**
     * 更新本地缓存  用户中心服务的用户数据
     * @param users 用户的最新信息
     * @return 数据库执行的结果
     */
    int updateUserCache(List<UserCache> users);

    /**
     * 删除好友的方法
     * @param userId 用户的id
     * @param friendId 好友的id
     * @return 数据库的执行结果
     */
    int deleteFriend(Long userId,Long friendId);

    /**
     * 更新备注
     * @param userId  我的id
     * @param friendId  好友的id
     * @param markName  好友的名字
     * @return
     */
 int editFriendMarkName(Long userId,Long friendId,String markName);

}
